;:poke56,128:clr
;:open2,8,2,"code,p,w
;:sys36864
	;.opt o2
	*= 2061	;32768
fa	=186
	jmp los
track	=2
sektor	=3
pos	=4
art	=5
passw	=820
len	=180
xmerk	=6
chk	=182
typ	=181
mode	=247
old	=248
byte	=249
flag	=250
mask	=251
hi	.byt 13
	.byte "\x93\x9btop secret!\x97 v1       nikolaus m. heusler"
	.byte "zum verschluesseln von files     nh 3.92"
	.byte "\x11bitte diskette einlegen!"
	brk
wait1	.byt 13
	.byte "\x11directory wird gelesen\x11"
	brk
errc	.byt 13
	.byte "\x9bachtung!\x97 "
	brk
ciaou	.byt 13
	.byte "\x11vorgang abgeschlossen.\x11"
	brk
break	.byt 13
	.byte "\x11vorgang abgebrochen.\x11"
	brk
rep	.byte "? [j/n/a]\x9d\x9d\x9d\x9d\x9d\x9d\x9d"
	brk
spa	.byte "      "
	brk
i0	.byte "i0"
kr	.byte "#"
u	.byte "u :3 0 "
tr	.byt 0,0,32
se	.byt 0,0
buftxt	.byte "b-p 3 0"
attng	.byt 13
	.byte "bitte \x9bkeine "
geos	.byte "geos-disketten\x97 bearbeiten!"
	brk
type	.byte "spuersqgr"
txt1	.byt 13
	.byte "\x11die datei soll "
	brk
txt2	.byte "codiert werden."
txt2a	.byt 13
	.byte "\x11codewort: "
	brk
txt3	.byt 13
	.byte "\x9bwarnung:\x97 das codewort ist zum ent-"
	.byt 13
	.byte "schluesseln der datei unbedingt erfor-"
	.byt 13
	.byte "derlich. bitte \x9bgut merken\x97!"
	.byt 13
	.byte "\x11auch delta-codieren? [j/n]\x9d\x9d\x9d\x9d\x9d"
	brk
txt4	.byt 13
	.byte "datei wird "
	brk
txt5	.byte "codiert. bitte warten!\x11"
	brk
pas0	.byt 13
	.byte "codewort falsch. bitte neueingabe."
	brk
grbit	.byt 128,64,32,16,8,4,2,1
grnot	.byt 127,191,223,239,247,251,253,254
control	ldx #15
	jsr $ffc6
	ldx #0
getfek	jsr 65508
	cmp #13
	beq endfek
	sta fek,x
	inx
	bne getfek
endfek	lda #0
	sta fek,x
	jsr $ffcc
	lda fek
	cmp #"0"
	beq frei
	jsr zu
	lda #<errc
	ldy #>errc
	jsr $ab1e
	lda #<fek
	ldy #>fek
	jsr $ab1e
	jsr $aad7
	lda #-1
frei	rts
sendcmd	sta u+1
	txa
	jsr numbasc
	stx tr
	sta tr+1
	tya
	jsr numbasc
	stx se
	sta se+1
	ldx #15
	jsr $ffc9
	ldx #0
comout	lda u,x
	jsr $ffd2
	inx
	cpx #12
	bcc comout
	jmp $ffcc
numbasc	ldx #"0"
	sec
numb1	sbc #10
	bcc numb2
	inx
	bcs numb1
numb2	adc #"9"+1
	rts
read	stx track
	sty sektor
	lda #"1"
	jsr sendcmd
	ldx #3
	jsr $ffc6
	ldx #0
dirin	jsr 65508
	sta buf,x
	inx
	bne dirin
	jsr $ffcc
	jmp control
write	ldx #15
	jsr $ffc9
	ldx #0
pntout	lda buftxt,x
	jsr $ffd2
	inx
	cpx #7
	bcc pntout
	jsr $ffcc
	ldx #3
	jsr $ffc9
	ldx #0
dirout	lda buf,x
	jsr $ffd2
	inx
	bne dirout
	jsr $ffcc
	ldx track
	ldy sektor
	lda #"2"
	jsr sendcmd
	jmp control
de	lda #"d"
	jsr $ffd2
	lda #"e"
	jmp $ffd2
eingabe	ldx #0
inlp	lda #"\xa4"
	jsr $ffd2
	dec 211
gi	stx xmerk
	jsr 65508
	ldx xmerk
	cmp #13
	beq crx
	cmp #20
	beq del
	cmp #35
	bcc gi
	cmp #96
	bcs gi
	cpx #14
	bcs gi
	jsr $ffd2
	sta passw,x
	inx
	bne inlp
del	txa
	beq gi
	jsr $ab3f
	dec 211
	dec 211
	dex
	bpl inlp
crx	jsr $ab3f
	lda #0
	sta passw,x
	stx len
dau	dex
	bmi enddau
	asl
	adc passw,x
	jmp dau
enddau	sta chk
	ldx len
	jmp $aad7
delta	stx mode
	lda #64
	and art
	beq de0
	ldy #1
	sty flag
	iny
de1	sty pos
	lda buf,y
	sta byte
	ldy #0
de2	lda byte
	and grbit,y
	beq de3
	lda #1
de3	ldx flag
	bne de4
	ldx mode
	beq de5
	tax
	beq de6
	lda old
	eor #1
	sta old
de6	lda old
	bpl de7
de5	cmp old
	sta old
de7	beq de8
	lda grbit,y
	.byt $2c
de8	lda #0
	sta mask
	lda byte
	and grnot,y
	ora mask
	sta byte
	lda old
de4	sta old
	lsr flag
	iny
	cpy #8
	bcc de2
	ldy pos
	lda byte
	sta buf,y
	iny
	bne de1
de0	rts
los	jsr 65409
	lda #<hi
	ldy #>hi
	jsr $ab1e
	lda #12
	sta 53280
	sta 53281
	jsr zu
	jsr $ffe7
	lda #0
	sta 198
wk	cmp 198
	beq wk
	dec 198
	lda #<wait1
	ldy #>wait1
	jsr $ab1e
	lda #2
	ldx #<i0
	ldy #>i0
	jsr $ffbd
	ldx fa
	cpx #8
	bcc set8
	cpx #12
	bcc ok8
set8	ldx #8
ok8	lda #15
	tay
	jsr $ffba
	jsr $ffc0
	jsr control
	bne clos
	lda #1
	ldx #<kr
	ldy #>kr
	jsr $ffbd
	ldx fa
	lda #3
	tay
	jsr $ffba
	jsr $ffc0
	jsr control
	bne clos
	ldx #18
	ldy #0
	jsr read
	beq freigabe
clos	lda #0
	sta 198
cl	cmp 198
	beq cl
	sta 198
	bne los
freigabe	ldx #3
testgeos	lda buf+173,x
	cmp geos,x
	bne dirloop
	dex
	bpl testgeos
	lda #<attng
	ldy #>attng
	jsr $ab1e
	jmp clos
dirloop	ldx buf
	bne nextrack
prgend	jsr zu
	lda #<ciaou
	ldy #>ciaou
	jmp $ab1e
nextrack	ldy buf+1
	jsr read
	beq red
abort	lda #<break
	ldy #>break
	jsr $ab1e
zu	jsr $ffcc
	lda #13
	jsr $ffc3
	lda #15
	jmp $ffc3
red	ldy #0
fileloop	sty pos
	lda buf+3,y
	cmp #18
	beq qf
	lda buf+2,y
	sta typ
	eor #128
	and #135
	beq qf
	cmp #4
	bcc weiter
qf	jmp fileist
weiter	jsr $aad7
	lda #34
	jsr $ffd2
	ldx #0
pnam	lda buf+5,y
	cmp #160
	beq namfert
	jsr $ffd2
	iny
	inx
	cpx #16
	bcc pnam
namfert	lda #34
	jsr $ffd2
	lda #20
	sta 211
	lda typ
	and #7
	tax
	lda type-1,x
	jsr $ffd2
	lda type+2,x
	jsr $ffd2
	lda type+5,x
	jsr $ffd2
	ldy pos
	lda buf+24,y
	and #192
	sta art
	bpl nonpt
	asl
	bpl norp
	lda #"%"
	.byt $2c
norp	lda #"/"
	jsr $ffd2
nonpt	lda #25
	sta 211
	lda #<rep
	ldy #>rep
	jsr $ab1e
	lda #0
	sta 198
getjn	jsr 65508
	cmp #"a"
	beq nab
	cmp #"j"
	beq enter
	cmp #"n"
	bne getjn
	jsr aut
	jmp fileist
nab	jsr aut
	jmp abort
aut	jsr $ffd2
	lda #<spa
	ldy #>spa
	jmp $ab1e
fileist	lda pos
	clc
	adc #16
	bcc nstop
	jmp dirloop
nstop	tay
	jmp fileloop
enter	jsr aut
	lda art
	beq code
	jmp uncode
code	lda #<txt1
	ldy #>txt1
	jsr $ab1e
	lda #<txt2
	ldy #>txt2
	jsr $ab1e
	jsr eingabe
	txa
	beq fileist
	lda #<txt3
	ldy #>txt3
	jsr $ab1e
deljn	jsr 65508
	cmp #"n"
	beq den
	cmp #"j"
	bne deljn
	pha
	lda #64
	ora art
	sta art
	pla
den	jsr aut
	jsr $aad7
	lda #<txt4
	ldy #>txt4
	jsr $ab1e
	lda #<txt5
	ldy #>txt5
	jsr $ab1e
	ldy pos
	lda art
	ora #128
	sta buf+24,y
	lda chk
	sta buf+25,y
	lda len
	eor #92
	sta buf+26,y
	jsr write
	beq passt
hilfe	jmp clos
passt	ldy pos
	lda buf+3,y
	tax
	lda buf+4,y
	tay
l4	jsr read
	bne hilfe
	ldx #0
	ldy #2
l1	lda passw,x
	bne l2
	ldx #0
	beq l1
l2	eor buf,y
	asl
	adc #0
	sta buf,y
	inx
	iny
	bne l1
	ldx #0
	jsr delta
	jsr write
	bne hilfe
	ldx buf
	beq l3
	ldy buf+1
	bpl l4
l3	jmp prgend
uncode	lda #<txt1
	ldy #>txt1
	jsr $ab1e
	jsr de
	lda #<txt2
	ldy #>txt2
	jsr $ab1e
reenter	jsr eingabe
	txa
	bne run
	jmp fileist
run	ldy pos
	lda len
	eor #92
	cmp buf+26,y
	beq right1
anschlag	lda #<pas0
	ldy #>pas0
	jsr $ab1e
	lda #<txt2a
	ldy #>txt2a
	jsr $ab1e
	jmp reenter
right1	lda chk
	cmp buf+25,y
	bne anschlag
	lda #<txt4
	ldy #>txt4
	jsr $ab1e
	jsr de
	lda #<txt5
	ldy #>txt5
	jsr $ab1e
	lda #0
	ldy pos
	sta buf+24,y
	jsr write
	beq geht
help	jmp clos
geht	ldy pos
	lda buf+3,y
	tax
	lda buf+4,y
	tay
m4	jsr read
	bne help
	ldx #1
	jsr delta
	ldx #0
	ldy #2
m1	lda passw,x
	bne m2
	ldx #0
	beq m1
m2	lda buf,y
	lsr
	bcc clear
	ora #128
clear	eor passw,x
	sta buf,y
	inx
	iny
	bne m1
	jsr write
	bne help
	ldx buf
	beq m3
	ldy buf+1
	bpl m4
m3	jmp prgend
fek	=10000
buf	=11000
